AWS ParallelCluster コンピュートフリートを停止しなくてもクラスターの設定変更をできる新機能を試してみた
AWS ParallelCluster 3.9.0 で追加された、コンピュートフリートを停止せずにクラスターの設定を変更できる新機能を試してみました。
検証結果
- 新規パーティションの追加はコンピュートフリートを停止せずに変更可能
- パーティションの最大ノード数の変更はコンピュートフリートを停止せずに変更可能
- 既存パーティションのコンピュートリソースの変更は、従来通りコンピュートフリートの停止が必要
検証内容と手順
現在のパーティション数と、コンピュートノードの最大数を確認し、コンピュートフリートを停止せずに変更できるのか検証します。ParallelCluster のバージョンは 3.9.0 を使用します。
- コンフィグ変更前の 2 つのパーティションを確認
- コンフィグを変更し、以下の変更をコンピュートフリートを停止せずに行えるか検証
test1
パーティションの最大ノード数を 10 から 20 に増加- 新規パーティション
queue2
を追加
- 変更後のパーティション設定を確認
- 新規追加の
queue2
パーティションでジョブを実行し、動作を確認
現状確認
ヘッドノードにログインし、test1
とqueue1
の 2 つのパーティションがあり、それぞれ最大ノード数 10 であることを確認しました。
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST test1* up infinite 10 idle~ test1-dy-test1-[1-10] queue1 up infinite 10 idle~ queue1-dy-queue1-[1-10]
クラスターの構成を管理しているマシンから、コンピュートフリートのステータスはRUNNING
状態であることを確認しました。
$ pcluster describe-cluster --cluster-name $CLUSTER_NAME | jq -r .computeFleetStatus RUNNING
コンフィグの変更内容
ParallelCluster のコンフィグを以下のように変更しました。
test1
パーティションのMaxCount
を 10 から 20 に増やした- 新規パーティション
queue2
を追加した
test1 パーティションの変更内容
MacCount
数を 10 から 20 へ増やしました。
SlurmQueues: # ------ Test 1 ------ - Name: test1 ComputeResources: - Name: test1 Instances: - InstanceType: t3.micro - InstanceType: t3a.micro MinCount: 0 MaxCount: 20 # 10 から 20 へ変更
queueu2 パーティションを新規追加
queue2
として新たなパーティション一式追記しました。
# ------ Compute 2 ------ - Name: queue2 ComputeResources: - Name: queue2 Instances: - InstanceType: m7i.large MinCount: 0 MaxCount: 5 DisableSimultaneousMultithreading: true ComputeSettings: LocalStorage: RootVolume: Size: 40 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 CapacityType: SPOT AllocationStrategy: capacity-optimized Networking: SubnetIds: - subnet-0c82bb28e119e2aa8 - subnet-0296a0c8515ed3bdc - subnet-0089ff187d1f54258 PlacementGroup: Enabled: false # CustomActions: # OnNodeConfigured: # Script: s3://hpc-dev-custom-boostrap-files-for-parallelcluster/install/apptainer.sh Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore S3Access: - BucketName: hpc-dev-custom-boostrap-files-for-parallelcluster EnableWriteAccess: false
クラスターの更新
ドライランでバリデーションチェックを行った後、クラスターを更新しました。約 7 分で更新が完了しました。
$ pcluster update-cluster --cluster-name $CLUSTER_NAME \ --cluster-configuration $CONFIG_NAME
変更後のクラスター確認
既存パーティションの最大ノード数の変更確認
sinfo
コマンドで以下を確認しました。
test1
パーティションのノード数が 20 に増加queue2
パーティションが新規追加
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST test1* up infinite 20 idle~ test1-dy-test1-[1-20] queue1 up infinite 10 idle~ queue1-dy-queue1-[1-10] queue2 up infinite 5 idle~ queue2-dy-queue2-[1-5]
新規パーティションの動作確認
queue2
パーティションを指定してジョブをサブミットし、コンピュートノードが正常に起動することを確認しました。
$ sbatch -q queue2 test.sh
番外編: 既存のパーティションを変更してみたらできなかった
既存のパーテションqueue1
のコンピュートリソース(インスタンスタイプ)を変更してドライランしたときの結果です。既存のパーティションの設定変更は従来どおりコンピュートフリートの停止が必要でした。
{ "message": "Update failure", "updateValidationErrors": [ { "parameter": "Scheduling.SlurmQueues[queue1].ComputeResources[queue1].Instances", "requestedValue": "-", "message": "All compute nodes must be stopped. Stop the compute fleet with the pcluster update-compute-fleet command", "currentValue": { "InstanceType": "m7i.8xlarge" } }, { "parameter": "Scheduling.SlurmQueues[queue1].ComputeResources[queue1].Instances", "requestedValue": "-", "message": "All compute nodes must be stopped. Stop the compute fleet with the pcluster update-compute-fleet command", "currentValue": { "InstanceType": "m7a.4xlarge" } } ], --- 省略 ---
まとめ
ParallelCluster 3.9.0 の新機能により、コンピュートフリートを停止せずに新規パーティションの追加や、パーティションの最大ノード数の変更ができるようになりました。ただし、既存パーティションを変更する場合は、従来通りコンピュートフリートの停止が必要でした。
おわりに
今回は比較的単純な設定変更でしたが、この新機能によりクラスターの設定変更が少し気軽になりました。この項目はコンピュートフリート停止しなくても OK と覚えておいたり、いちいちドキュメント確認するくらいなら、素直にコンピュートフリート停止して更新かけるのも悪くない気がします。でも、新たなパーティション追加をサクッと実施できるのは魅力的だったので、私はできる限りコンピュートフリート停止せずに運用したくなりました。